package com.xiaohong.mq.listener;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;

import java.io.IOException;

/**
 * @author : xiaohong
 * @date : 2021/4/13 16:48
 * 消息监听者
 */

//@Component
public class MQListener {

    /**
     * channel.basicAck(deliveryTag, false);
     *
     * deliveryTag:该消息的index
     * multiple：是否批量.true:将一次性ack所有小于deliveryTag的消息。
     *
     * channel.basicNack(deliveryTag, false, true);
     *
     * deliveryTag:该消息的index
     * multiple：是否批量.true:将一次性拒绝所有小于deliveryTag的消息。
     * requeue：被拒绝的是否重新入队列
     *
     * channel.basicReject(deliveryTag:, false);
     *
     * deliveryTag:该消息的index
     * requeue：被拒绝的是否重新入队列
     * @param channel
     * @param message
     * @param tag
     */

    @RabbitListener(queues = {"chat"})
    public void chatReceive1(Channel channel, String message, @Header(AmqpHeaders.DELIVERY_TAG) long tag) throws IOException {
        System.out.println("chat接收到消息：  " + message);
        channel.basicAck(tag, true);
    }

}
